package xfuzzy.alg_genetico.indeterminado.xfghlOld.model.spec;
import xfuzzy.lang.FuzzyOperator;
import xfuzzy.lang.Operatorset;


/**
 * Clase que crea un Conjunto de operadores (OperatorSet).
 * Contiene las variables globales que definen las funciones para el operador AND y el operador de defuzificaci�n.
 * @author Sergio Cala Cordero, Septiembre 2009, Herramienta Xfghl
 */
public class XfghlOperSet {


	/**
	 * Funci�n Minimo para el operador AND
	 */		
	public static final int AndOperatorMin=0;
	
	/**
	 * Funci�n Producto para el operador AND
	 */		
	public static final int AndOperatorProd=1;
	
	/**
	 * Metodo de defuzificacion: FuzzyMean
	 */
	public static final int DefuzOperatorFuzzyMean=0;

	/**
	 * Metodo de defuzificacion: WeightedFuzzyMean
	 */
	public static final int DefuzOperatorWeightedFuzzyMean=1;

	
	/**
	 * 
	 * @param name  Nombre del conjunto de operadores.
	 * @param AndOperator   Funci�n que utilizaremos para el operador AND.
	 * @param DefuzOperator Funci�n que utilizaremos para el operador de defuzificaci�n.
	 * @return el conjunto de operadores (OperatorSet)
	 */
	public static Operatorset create(String name,int AndOperator,int DefuzOperator)
	{
		/*Creamos el conjunto de operadores*/
		Operatorset opSet=new Operatorset(name);
		
		//OPERADOR AND
		if(AndOperator==XfghlOperSet.AndOperatorMin)
		{
			//Min para el and
			opSet.set(new xfuzzy.pkg.xfl.binary.min(), FuzzyOperator.AND);
		}
		else if(AndOperator==XfghlOperSet.AndOperatorProd)
		{
			//Producto para el and
			opSet.set(new xfuzzy.pkg.xfl.binary.prod(), FuzzyOperator.AND);
		}
		
		if(DefuzOperator==XfghlOperSet.DefuzOperatorFuzzyMean)
		{
			opSet.set(new xfuzzy.pkg.xfl.defuz.FuzzyMean(), FuzzyOperator.DEFUZMETHOD);
		}
		else if(DefuzOperator==XfghlOperSet.DefuzOperatorWeightedFuzzyMean)
		{	
			opSet.set(new xfuzzy.pkg.xfl.defuz.WeightedFuzzyMean(), FuzzyOperator.DEFUZMETHOD);			
		}						
		return opSet;
	}
	
}
